import {defineStore} from 'pinia' //引入pinia
import router from '../../router/routerindex.js'
import axios from 'axios'

//这里官网是单独导出  是可以写成默认导出的  官方的解释为大家一起约定仓库用use打头的单词 固定统一小仓库的名字不易混乱
export const useStoreHome = defineStore("Home", {
    state: () => {
        return ({
            type: 1,
            bvid: 'BV1QL411673n',//就是bv号  也是aid   也是avid    就是视频地址后面的编码
            cid: '', //可以通过bvid获取  就是一组视频里面的每一集的编号
            downurl: "https://www.bilibili.com/video/BV1vk4y1p7C3?p=1&vd_source=4307a5f2a8e5fed14f2fd8b4d4c9e149",
            plist: [],
            percent: 0,
            tabs_current: "1",
        })
    },
    actions: {
        async getDown(cid, name) {
            let res = await $tools.getVedioUrl(this.bvid, cid);

            console.log(name);
            console.log(res.data.durl[0].url);
            let url = res.data.durl[0].url;

            axios.get(url, {
                params: {},
                responseType: 'blob', // 切记类型 blob
                // onDownloadProgress 配置该属性代表允许为下载处理进度事件
                onDownloadProgress: (progressEvent) => {//axios封装的原生获取下载进度的事件，该回调参数progressEvent中包含下载文件的总进度以及当前进度
                    console.log(progressEvent);
                    if (progressEvent.lengthComputable) {
                        //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
                        //如果lengthComputable为false，就获取不到progressEvent.total和progressEvent.loaded
                        this.percent = (progressEvent.loaded / progressEvent.total * 100).toFixed(2) //实时获取最新下载进度
                    }
                }
            }).then((res) => {
                console.log(res);
                let blob = new Blob([res.data]);
                let url = window.URL.createObjectURL(blob); // 创建 url 并指向 blob
                let a = document.createElement('a');
                a.href = url;
                a.download = name + '.mp4';
                a.click();
                window.URL.revokeObjectURL(url); // 释放该 url
            }).catch((err) => {
                console.log(err);
            });
        },
        async getPlist() {
            let res = await $tools.getPlist(this.bvid);
            this.plist = res.data;
            console.log(res.data);
        }
    },
})
